diff --git a/docs/FourierTransformsOfType1ChebyshevPolynomials.mw b/docs/FourierTransformsOfType1ChebyshevPolynomials.mw index 7b25fb725..c6cf155e0 100644 --- a/docs/FourierTransformsOfType1ChebyshevPolynomials.mw +++ b/docs/FourierTransformsOfType1ChebyshevPolynomials.mw @@ -4,7 +4,7 @@ - + @@ -84,14 +84,53 @@ + + + LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzY/LUkjbWlHRiQ2JVEiVkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNi1RKiZjb2xvbmVxO0YnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSdsc3BhY2VHUSwwLjI3Nzc3NzhlbUYnLyUncnNwYWNlR0ZMLUkobWZlbmNlZEdGJDYkLUYjNiotRiw2JVEibUYnRi9GMi1GNjYtUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIL0ZLUSYwLjBlbUYnL0ZOUSwwLjMzMzMzMzNlbUYnLUY2Ni1RIn5GJ0Y5RjtGPkZARkJGREZGRkhGZW4vRk5GZm4tRiw2JVEieUYnRi9GMi8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYnLyUlc2l6ZUdRIzEyRicvJStleGVjdXRhYmxlR0Y9RjlGOUZpbi1GNjYtUSgmc3JhcnI7RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZpbi1GNjYtUSomdW1pbnVzMDtGJ0Y5RjtGPkZARkJGREZGRkgvRktRLDAuMjIyMjIyMmVtRicvRk5GX3AtRiw2JVEiSUYnRi9GMi1GNjYtUSIqRidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSwwLjE2NjY2NjdlbUYnL0ZORmhwLUZQNiQtRiM2MS1GLDYlUSpoeXBlcmdlb21GJy9GMEY9RjktRlA2JC1GIzYyLUZQNiYtRiM2Li1JI21uR0YkNiRRIjFGJ0Y5RldGaW5GVEZXRmluRltwRlRGYG9GY29GZm9GOUY5LyUlb3BlbkdRIltGJy8lJmNsb3NlR1EiXUYnRlctRlA2Ji1GIzYpRmpxLUY2Ni1RIi9GJ0Y5RjtGPi9GQUYxRkJGREZGRkhGZ3BGaXAtRltyNiRRIjJGJ0Y5RmBvRmNvRmZvRjlGOUZeckZhckZXRltwRmpxRmhyRlxzRmRwRmFwRmhyRl1vRmBvRmNvRmZvRjlGOUZkcC1GLDYlUSRleHBGJ0ZhcUY5LUZQNiQtRiM2KS1GUDYkLUYjNitGVEZkcC1GLDYlUSNQaUYnRmFxRjktRjY2LVEiK0YnRjlGO0Y+RkBGQkZERkZGSEZecEZgcEZdb0Zgb0Zjb0Zmb0Y5RjlGZHBGYXBGYG9GY29GZm9GOUY5RltwRl5xLUZQNiQtRiM2MS1GUDYmLUYjNjBGanEtSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdGZm4vJSZkZXB0aEdGXXUvJSpsaW5lYnJlYWtHUShuZXdsaW5lRictRml0NiZGW3VGXnVGYHUvRmN1USVhdXRvRidGV0ZpbkZURldGaW5GW3BGVEZgb0Zjb0Zmb0Y5RjlGXnJGYXJGV0ZkckZXRmpxRmhyRlxzRmRwRmFwRmhyRl1vRmBvRmNvRmZvRjlGOUZkcEZfcy1GUDYkLUYjNiktRlA2JC1GIzYtRlxzRmRwRlRGZHBGanNGW3BGXW9GYG9GY29GZm9GOUY5RmRwRmFwRmBvRmNvRmZvRjlGOUZgb0Zjb0Zmb0Y5RjlGZHAtRlA2JC1GIzYtLUZbcjYkUSI0RidGOUZkcEZULUY2Ni1RIl5GJ0Y5RjtGPkZARkJGREZGRkgvRktRLDAuMTExMTExMWVtRicvRk5GXHdGXHNGW3BGanFGYG9GY29GZm9GOUY5RmRwLUZQNiQtRiM2KEZbcEZqcUZgb0Zjb0Zmb0Y5RjlGaHYtRlA2JC1GIzYoRltwRlRGYG9GY29GZm9GOUY5RmhyLUZQNiQtRiM2MUZldkZkcEZURmh2RlxzRmRwRl1vRltwRlxzRmRwRl1vRmBvRmNvRmZvRjlGOUZockZqc0ZodEZldUZodEZldS1GLDYjUSFGJ0Zgb0Zjb0Zmb0Y5 -LV9JLFR5cGVzZXR0aW5nRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliRzYiSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJWR0YoZio2JEkibUdGKEkieUdGKEYoNiRJKW9wZXJhdG9yR0YoSSZhcnJvd0dGKEYoKi5eIyEiIiIiIiwmKiYtSSpoeXBlcmdlb21HRiU2JTclRjg5JCwkRj9GNzcjI0Y4IiIjKiZeIyNGN0ZDRjg5JUY3RjgtSSRleHBHRiU2IyomXiNGOEY4LCYqJkY/RjhJI1BpR0YmRjhGOEZHRjhGOEY4RjgqJi1GPDYlRj5GQSomXiNGQkY4RkdGN0Y4LUZJNiMqJkZMRjgsJkZORkNGR0Y3RjhGOEY3RjgsJiokRj9GQyIiJUY3RjhGOClGN0ZARjgsJiomRj9GQ0ZHRjhGZW5GRyEiI0Y3Rk9GN0YoRihGKDcjRi4= +LV9JLFR5cGVzZXR0aW5nRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliRzYiSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSJWR0YoZio2JEkibUdGKEkieUdGKEYoNiRJKW9wZXJhdG9yR0YoSSZhcnJvd0dGKEYoKi5eIyEiIiIiIiwmKiYtSSpoeXBlcmdlb21HRiU2JTclRjg5JCwkRj9GNzcjI0Y4IiIjKiZeIyNGN0ZDRjg5JUY3RjgtSSRleHBHRiU2IyomXiNGOEY4LCYqJkY/RjhJI1BpR0YmRjhGOEZHRjhGOEY4RjgqJi1GPDYlRj5GQSomXiNGQkY4RkdGN0Y4LUZJNiMqJkZMRjgsJkZORkNGR0Y3RjhGOEY3RjgsJiokRj9GQyIiJUY3RjhGOClGN0ZARjgsJiomRj9GQ0ZHRjhGZW5GRyEiI0Y3Rk9GN0YoRihGKDcjRi4= - + +JSFH + + + +LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYyLUkjbW9HRiQ2LVEqJnVtaW51czA7RicvJSxtYXRodmFyaWFudEdRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y0LyUpc3RyZXRjaHlHRjQvJSpzeW1tZXRyaWNHRjQvJShsYXJnZW9wR0Y0LyUubW92YWJsZWxpbWl0c0dGNC8lJ2FjY2VudEdGNC8lJ2xzcGFjZUdRLDAuMjIyMjIyMmVtRicvJSdyc3BhY2VHRkMtSSNtaUdGJDYlUSJJRicvJSdpdGFsaWNHUSV0cnVlRicvRjBRJ2l0YWxpY0YnLUYsNi1RIipGJ0YvRjJGNUY3RjlGO0Y9Rj8vRkJRLDAuMTY2NjY2N2VtRicvRkVGUy1JKG1mZW5jZWRHRiQ2JC1GIzYxLUZHNiVRKmh5cGVyZ2VvbUYnL0ZLRjRGLy1GVjYkLUYjNi4tRlY2Ji1GIzYsLUkjbW5HRiQ2JFEiMUYnRi8tRiw2LVEiLEYnRi9GMi9GNkZMRjdGOUY7Rj1GPy9GQlEmMC4wZW1GJy9GRVEsMC4zMzMzMzMzZW1GJy1GRzYlUSJtRidGSkZNRmRvRitGXHAvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GJy8lJXNpemVHUSMxMkYnLyUrZXhlY3V0YWJsZUdGNEYvRi8vJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRidGZG8tRlY2Ji1GIzYpRmBvLUYsNi1RIi9GJ0YvRjJGNS9GOEZMRjlGO0Y9Rj9GUkZULUZhbzYkUSIyRidGL0ZfcEZicEZlcEYvRi9GZ3BGanBGZG9GKy1GVjYkLUYjNiktRlY2JEZfcUYvRk9GRkZfcEZicEZlcEYvRi9GYXEtRkc2JVEieUYnRkpGTUZfcEZicEZlcEYvRi9GTy1GRzYlUSRleHBGJ0ZnbkYvLUZWNiQtRiM2KUZGRk8tRlY2JC1GIzYrLUZHNiVRJyYjOTYwO0YnRmduRi9GT0ZccC1GLDYtUSIrRidGL0YyRjVGN0Y5RjtGPUY/RkFGREZeckZfcEZicEZlcEYvRi9GX3BGYnBGZXBGL0YvLUYsNi1RKCZtaW51cztGJ0YvRjJGNUY3RjlGO0Y9Rj9GQUZERlotRlY2JC1GIzYtRlxvRmRvRl1xRmRvRmhxRmFxRl5yRl9wRmJwRmVwRi9GL0ZPRmFyLUZWNiQtRiM2KUZGRk8tRlY2JC1GIzYtRmVxRk9GXHNGT0ZccEYrRl5yRl9wRmJwRmVwRi9GL0ZfcEZicEZlcEYvRi9GX3BGYnBGZXBGL0YvRk8tRlY2JC1GIzYtLUZhbzYkUSI0RidGL0ZPRlxwLUYsNi1RIl5GJ0YvRjJGNUY3RjlGO0Y9Rj8vRkJRLDAuMTExMTExMWVtRicvRkVGXHVGZXFGK0Zgb0ZfcEZicEZlcEYvRi9GTy1GVjYkLUYjNihGK0Zgb0ZfcEZicEZlcEYvRi9GaHQtRlY2JC1GIzYoRitGXHBGX3BGYnBGZXBGL0YvRmFxLUZWNiQtRiM2KS1GVjYkLUYjNjFGZXRGT0ZccEZodEZlcUZPRl5yRitGZXFGT0ZeckZfcEZicEZlcEYvRi9GT0Zcc0ZfcEZicEZlcEYvRi9GX3BGYnBGZXBGLw== + +Ki5eIyEiIiIiIiwmKiYtSSpoeXBlcmdlb21HNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHNiI2JTclRiVJIm1HRi0sJEYwRiQ3IyNGJSIiIyomXiMjRiRGNEYlSSJ5R0YtRiRGJS1JJGV4cEdGKjYjKiZeI0YlRiUsJiomSSNQaUdGK0YlRjBGJUYlRjhGJUYlRiVGJSomLUYpNiVGL0YyKiZeI0YzRiVGOEYkRiUtRjo2IyomRj1GJSwmRj9GNEY4RiRGJUYlRiRGJSwmKiRGMEY0IiIlRiRGJUYlKUYkRjFGJSwmKiZGMEY0RjhGJUZMRjghIiNGJEZARiQ= + + + +LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYpLUkjbWlHRiQ2JVEmZXZhbGZGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSShtZmVuY2VkR0YkNiYtRiM2Jy1JI21uR0YkNiRRIzQwRicvRjNRJ25vcm1hbEYnLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lK2V4ZWN1dGFibGVHUSZmYWxzZUYnRj5GPi8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GNjYkLUYjNiktSSNtb0dGJDYtUSJ+RidGPi8lJmZlbmNlR0ZILyUqc2VwYXJhdG9yR0ZILyUpc3RyZXRjaHlHRkgvJSpzeW1tZXRyaWNHRkgvJShsYXJnZW9wR0ZILyUubW92YWJsZWxpbWl0c0dGSC8lJ2FjY2VudEdGSC8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHRmFvLUYsNiVRJWV2YWxGJ0YvRjItRjY2JC1GIzYqLUYsNiNRIUYnLUkobWFjdGlvbkdGJDYlLUkqbXZlcmJhdGltR0YkNiNRXFttKi5eIyEiIiIiIiwmKiYtSSpoeXBlcmdlb21HNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHNiI2JTclIiIiSSJtRzYiLCRJIm1HNiIhIiI3IyMiIiIiIiMqJl4jIyEiIiIiIyIiIkkieUc2IiEiIiIiIi1JJGV4cEc2JCUqcHJvdGVjdGVkR0koX3N5c2xpYkc2IjYjKiZeIyIiIiIiIiwmKiZJI1BpRyUqcHJvdGVjdGVkRyIiIkkibUc2IiIiIiIiIkkieUc2IiIiIiIiIiIiIiIiIiomLUkqaHlwZXJnZW9tRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliRzYiNiU3JSIiIkkibUc2IiwkSSJtRzYiISIiNyMjIiIiIiIjKiZeIyMiIiIiIiMiIiJJInlHNiIhIiIiIiItSSRleHBHNiQlKnByb3RlY3RlZEdJKF9zeXNsaWJHNiI2IyomXiMiIiIiIiIsJiomSSNQaUclKnByb3RlY3RlZEciIiJJIm1HNiIiIiIiIiNJInlHNiIhIiIiIiIiIiIhIiIiIiIsJiokSSJtRzYiIiIjIiIlISIiIiIiIiIiKSEiIiwkSSJtRzYiISIiIiIiLCYqJkkibUc2IiIiI0kieUc2IiIiIiIiJUkieUc2IiEiIyEiIkkjUGlHJSpwcm90ZWN0ZWRHISIiRicvJSthY3Rpb250eXBlR1E4bWFwbGVzb2Z0LmNvbTpsYWJlbChMMylGJy8lJXZpZXdHUSZsYWJlbEYnLUZUNi1RIixGJ0Y+RlcvRlpGMUZlbkZnbkZpbkZbb0Zdb0Zfby9GY29RLDAuMzMzMzMzM2VtRictRjY2Ji1GIzYtLUYsNiVRIm1GJ0YvRjItRlQ2LVEiPUYnRj5GV0ZZRmVuRmduRmluRltvRl1vL0Zgb1EsMC4yNzc3Nzc4ZW1GJy9GY29GXHItRjs2JFEiMkYnRj5GW3EtRiw2JVEieUYnRi9GMkZocS1GOzYkUSQyLjNGJ0Y+RkBGQ0ZGRj5GPi9GSlEifGZyRicvRk1RInxockYnRkBGQ0ZGRj5GPkZARkNGRkY+Rj5GQEZDRkZGPg== + +XiQkIUlsc3YmUWgqWzdkW044T29seEE1KCpHISNTJCFJMShld3InSF4pRzVjJEd5ayEpRysiR1siISN6 + + + +LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUkjbWlHRiQ2JVEkbWFwRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkobWZlbmNlZEdGJDYkLUYjNiktRiw2JVEpc2ltcGxpZnlGJ0YvRjItSSNtb0dGJDYtUSIsRicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0YxLyUpc3RyZXRjaHlHRkUvJSpzeW1tZXRyaWNHRkUvJShsYXJnZW9wR0ZFLyUubW92YWJsZWxpbWl0c0dGRS8lJ2FjY2VudEdGRS8lJ2xzcGFjZUdRJjAuMGVtRicvJSdyc3BhY2VHUSwwLjMzMzMzMzNlbUYnLUY2NiYtRiM2KC1GLDYlUSRzZXFGJ0YvRjItRjY2JC1GIzYuLUYsNiVRJmxpbWl0RidGL0YyLUY2NiQtRiM2LC1GLDYlUSJWRidGL0YyLUY2NiQtRiM2Ky1JI21uR0YkNiRRIjJGJ0ZBLUY+Ni1RIn5GJ0ZBRkMvRkdGRUZIRkpGTEZORlBGUi9GVkZULUYsNiVRIm5GJ0YvRjJGPS1GLDYlUSJ5RidGL0YyLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lK2V4ZWN1dGFibGVHRkVGQUZBRj1GZ3AtRj42LVEiPUYnRkFGQ0ZicEZIRkpGTEZORlAvRlNRLDAuMjc3Nzc3OGVtRicvRlZGZnEtRlxwNiRRIjBGJ0ZBRmpwRl1xRmBxRkFGQUY9RmRwRmJxRmhxLUY+Ni1RIy4uRidGQUZDRmJwRkhGSkZMRk5GUC9GU1EsMC4yMjIyMjIyZW1GJ0ZjcC1GXHA2JFEjMjBGJ0ZBRmpwRl1xRmBxRkFGQUZqcEZdcUZgcUZBRkEvJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRidGanBGXXFGYHFGQUZBRmpwRl1xRmBxRkE= + +NzcqJEkjUGlHJSpwcm90ZWN0ZWRHISIiLCRGIyMhIiYiIigsJEYjIyEjQCIkYiIsJEYjIyEkViIiJSZbIywkRiMjISMmKSIlbkUsJEYjIyEkTCIiJW5sLCRGIyMhJHYmIiZUNSUsJEYjIyEkaCMiJjphIywkRiMjISRUJCImTk0lLCRGIyMhJSZIIiInIikqMyMsJEYjIyEkTCYiJ25pNSwkRiMjISRYJyInKG9iIiwkRiMjISUuQiInRD1tLCRGIyMhJCwqIid2UkksJEYjIyElWDUiJygpKjMlLCRGIyMhJSpmJCIoLHRoIiwkRiMjISVsOCInRiEpcCwkRiMjISVUOiInTigqKSksJEYjIyElJD0mIihYYE4kLCRGIyMhJUQ+IihaJylRIiwkRiMjISVMQCIobl1xIg== + + + +JSFH + + + +LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYpLUkjbWlHRiQ2JVElZ2Z1bkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JKG1mZW5jZWRHRiQ2Ji1GIzYnLUYsNiVRKWd1ZXNzZXFuRidGL0YyLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lK2V4ZWN1dGFibGVHUSZmYWxzZUYnL0YzUSdub3JtYWxGJ0ZGLyUlb3BlbkdRIltGJy8lJmNsb3NlR1EiXUYnLUY2NiQtRiM2Ky1GLDYjUSFGJy1JKG1hY3Rpb25HRiQ2JS1JKm12ZXJiYXRpbUdGJDYjUWRnbTc3KiRJI1BpRyUqcHJvdGVjdGVkRyEiIiwkKiRJI1BpRyUqcHJvdGVjdGVkRyEiIiMhIiYiIigsJCokSSNQaUclKnByb3RlY3RlZEchIiIjISNAIiRiIiwkKiRJI1BpRyUqcHJvdGVjdGVkRyEiIiMhJFYiIiUmWyMsJCokSSNQaUclKnByb3RlY3RlZEchIiIjISMmKSIlbkUsJCokSSNQaUclKnByb3RlY3RlZEchIiIjISRMIiIlbmwsJCokSSNQaUclKnByb3RlY3RlZEchIiIjISR2JiImVDUlLCQqJEkjUGlHJSpwcm90ZWN0ZWRHISIiIyEkaCMiJjphIywkKiRJI1BpRyUqcHJvdGVjdGVkRyEiIiMhJFQkIiZOTSUsJCokSSNQaUclKnByb3RlY3RlZEchIiIjISUmSCIiJyIpKjMjLCQqJEkjUGlHJSpwcm90ZWN0ZWRHISIiIyEkTCYiJ25pNSwkKiRJI1BpRyUqcHJvdGVjdGVkRyEiIiMhJFgnIicob2IiLCQqJEkjUGlHJSpwcm90ZWN0ZWRHISIiIyElLkIiJ0Q9bSwkKiRJI1BpRyUqcHJvdGVjdGVkRyEiIiMhJCwqIid2UkksJCokSSNQaUclKnByb3RlY3RlZEchIiIjISVYNSInKCkqMyUsJCokSSNQaUclKnByb3RlY3RlZEchIiIjISUqZiQiKCx0aCIsJCokSSNQaUclKnByb3RlY3RlZEchIiIjISVsOCInRiEpcCwkKiRJI1BpRyUqcHJvdGVjdGVkRyEiIiMhJVQ6IidOKCopKSwkKiRJI1BpRyUqcHJvdGVjdGVkRyEiIiMhJSQ9JiIoWGBOJCwkKiRJI1BpRyUqcHJvdGVjdGVkRyEiIiMhJUQ+IihaJylRIiwkKiRJI1BpRyUqcHJvdGVjdGVkRyEiIiMhJUxAIihuXXEiRicvJSthY3Rpb250eXBlR1E5bWFwbGVzb2Z0LmNvbTpsYWJlbChMMjIpRicvJSV2aWV3R1EmbGFiZWxGJy1JI21vR0YkNi1RIixGJ0ZGLyUmZmVuY2VHRkUvJSpzZXBhcmF0b3JHRjEvJSlzdHJldGNoeUdGRS8lKnN5bW1ldHJpY0dGRS8lKGxhcmdlb3BHRkUvJS5tb3ZhYmxlbGltaXRzR0ZFLyUnYWNjZW50R0ZFLyUnbHNwYWNlR1EmMC4wZW1GJy8lJ3JzcGFjZUdRLDAuMzMzMzMzM2VtRictRiw2JVEiYUYnRi9GMi1GNjYkLUYjNictRiw2JVEieEYnRi9GMkY9RkBGQ0ZGRkZGPUZARkNGRkZGRj1GQEZDRkY= + + + +LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUkjbWlHRiQ2JVElcGxvdEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JKG1mZW5jZWRHRiQ2JC1GIzYtLUYsNiVRIlZGJ0YvRjItRjY2JC1GIzYpLUkjbW5HRiQ2JFEjMTJGJy9GM1Enbm9ybWFsRictSSNtb0dGJDYtUSIsRidGRS8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGMS8lKXN0cmV0Y2h5R0ZNLyUqc3ltbWV0cmljR0ZNLyUobGFyZ2VvcEdGTS8lLm1vdmFibGVsaW1pdHNHRk0vJSdhY2NlbnRHRk0vJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR1EsMC4zMzMzMzMzZW1GJy1GLDYlUSJ5RidGL0YyLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR0ZELyUrZXhlY3V0YWJsZUdGTUZFRkVGR0Zqbi1GSDYtUSI9RidGRUZLL0ZPRk1GUEZSRlRGVkZYL0ZlblEsMC4yNzc3Nzc4ZW1GJy9GaG5GaW8tRkI2JFEkMWUuRidGRS1GQjYkUSQuMzBGJ0ZFRl1vRmBvRmJvRkVGRUZdb0Zgb0Zib0ZF + +NiotJSdDVVJWRVNHNiQ3YWFsNyQkIiM1ISIiJCErWk0kZj0jISInNyQkIi9EYy9ady81ISM4JCExPCE0JWYlXCFbPyEjNzckJCIuRCI0JUgmNDUhIzckITFoKVImejwsZz4hIzc3JCQiMioqXChvOFRIOTUhIzskITJpYnI/UGxzIz0hIzg3JCQiLUQ9KWUhPjUhIzYkITInM3hjIVs8KT48ISM4NyQkIi52dEEpZUc1ISM3JCExIj07bTYwSmAiISM3NyQkIixsajwiUTUhIzUkITI5dDhmW3RFTSIhIzg3JCQiLkRjL1p3LyIhIzckITIjKSpcNTRMIzQ/IiEjODckJCItdmFrPGQ1ISM2JCEyaikqbzE8Pi4wIiEjODckJCIudlEnZXFtNSEjNyQhMGY/QV1JdVAqISM3NyQkIit0X0J3NSEiKiQhL1lWPlplQikpISM2NyQkIi1EIjQlSCY0IiEjNiQhMW05Uy1dLDBxISM4NyQkIiwmNEhOOTYhIzUkITElcCN5R1ZaI28mISM4NyQkIi5EJz1CKVE3IiEjNyQhMVAyNnQrXFBbISM4NyQkIi12RjxUTDYhIzYkITEjeU5tQVZzSiUhIzg3JCQiL0RKS2s8UTYhIzgkITF2cFFbNzEqNCUhIzg3JCQiLnZvOFRIOSIhIzckITFlOig+OlgiNFMhIzg3JCQiMioqXFA5JWVxWjYhIzskITJgRSczQUdZNlAhIzk3JCQiK1kwWl82ISIqJCIyLysrIWZQQicqZiEjOjckJCIyKipcUCoqRzttOiIhIzskITFDSm1oWDl6SyEjODckJCIudlEuaTI7IiEjNyQhMTZbJz1uQiFSSyEjODckJCIvRCJ5eDJcOyIhIzgkITFodjchPloxNyQhIzg3JCQiLXZATjBwNiEjNiQhMjpcP29ePiR6RyEjOTckJCIuRCc0XU14NiEjNyQhMT1ELi4mR3l6IyEjODckJCIsdlxPYz0iISM1JCExKT4jKXpfWUFSIyEjODckJCItRHQlPkE/IiEjNiQhMnlBcSk+JkcoKjQjISM5NyQkIitcQyEpPTchIiokITIyZC8nKlEmKkdwIiEjOTckJCItdkNhUU43ISM2JCEyQWhBenN4Ilw5ISM5NyQkIiwwU28+RCIhIzUkITJFSyNRTWFIPDchIzk3JCQiLnYkKSkpZi1FIiEjNyQhMjJnXUptITRDNiEjOTckJCItRHc4Ym83ISM2JCExJG9qPWBkbyYqKiEjOTckJCIvdj0/cnBzNyEjOCQhMVtSPyVlZC0hKiohIzk3JCQiLkRUJ0clb0YiISM3JCExMVhMR1YydiUqISM5NyQkIjIsXWkhMycpKTRHIiEjOyQhMUBwMEIoZVNCKiEjOTckJCIrX1Y4JkciISIqJCErV0wzcjghIig3JCQiKzo6dGY4ISIqJCEybGIlemI7YUhUISM6NyQkIit5J0dWViIhIiokIStmOlRXJykhIio3JCQiL0RjMD4tUjkhIzgkITJMRjpicyI+PT8hIzo3JCQiLkRKODpQVyIhIzckITJYTzVhSU46Jj4hIzo3JCQiL3ZvZyQzJVs5ISM4JCEyO3opKW9qY10lPSEjOjckJCItRCllLEpYIiEjNiQhMDM+IXlSWSd5IiEjODckJCIudkwvKVtpOSEjNyQhMjFCaFNKei5sIiEjOjckJCIsJilcdT1aIiEjNSQhMiczO0RmRFMjXCIhIzo3JCQiMiwrXSgzdWshXCIhIzskITFzYyFvUDw3RiIhIzk3JCQiKz4uVTQ6ISIqJCExWXpeWEcpPTMiISM5NyQkIjIpKioqKlxSaCdwYSIhIzskITFwSlQ6c09teSEjOjckJCIqJz5eJWUiISIpJCEyMCsrcXVPRW0mISM7NyQkIixOcVkjZjshIzUkITJXSiY+Ojlha0ohIzs3JCQiK1o5KVJ0IiEiKiQhK2VkIUdOJCEjNTckJCIrQCxGLj0hIiokITJ4L1xFJFJCLjYhIzs3JCQiKyZ6ZUQoPSEiKiQhK2EpZXppJyEjNTckJCIrOHcvOz8hIiokIStgczV6XCEjNTckJCIrYFJXa0AhIiokISsicCNbISo+ISM1NyQkIislUWtCSiMhIiokISpwKG84JyohIzU3JCQiK0goPVhZIyEiKiQhK29dZyZHIiEjNjckJCIrZmpgKWYjISIqJCErUUZoKCo9ISM3NyQkIitvJTMlXEYhIiokIitzTCV6TyMhIzc3JCQiK3QrITQhSCEiKiQhK3lucXkoKSEjODckJCIrMC4qby8kISIqJCIrUCtNRUohIzc3JCQiK0FNWXpKISIqJCIrUShvX0QkISM3NyQkIipvMHJMJCEiKSQiKzRJImUlUSEjNzckJCIrXiRcMVokISIqJCIrKlE2SXgkISM3NyQkIispUSMqZmkkISIqJCIqPU11biQhIzY3JCQiKyhIKFxqUCEiKiQiK2RkKG9UJCEjNzckJCIyJyoqKipcTydIKlFRISM7JCIxbHhTQzVpIzMkISM9NyQkIit3Pk85UiEiKiQiK144Jyk0SCEjNzckJCIsJilvdy0mUiEjNSQiMi50PWxsdy11IyEjPjckJCIrLDk+JylSISIqJCIyJFI0WDlKYD1FISM+NyQkIi1EZChbVCslISM2JCIyTyQqKWZgKCl6Y0QhIz43JCQiLE42MUAtJSEjNSQiMkVfaXNuWE9cIyEjPjckJCIuRDt6JTNKUyEjNyQiMkdQbzduM0JZIyEjPjckJCItdnBNMVNTISM2JCIyeCo+LCZSIVJJQyEjPjckJCIxKlw3KTNHYldTISM6JCIyYidbYktWbjlDISM+NyQkIjEqKlwoeTlVIVxTISM6JCIyOTRHai1YclIjISM+NyQkIi92JHBbSk4wJSEjOCQiMSJIUnVZWjZRIyEjPTckJSp1bmRlZmluZWRHJSp1bmRlZmluZWRHNyQkIi52LilccWlTISM3JCIxcE5oOzs8W0IhIz03JCQiLXZNIipRblMhIzYkIjJ0KSlSTTElKjRMIyEjPjckJCIuRCIqR3Q/MiUhIzckIjJzP1opUWFROUIhIz43JCQiLE5XZG4yJSEjNSQiMSRbSC8pPiZmSCMhIz03JCQiLURfZDcnMyUhIzYkIjI4c2ZZYWY/RSMhIz43JCQiK2hTXCY0JSEiKiQiMXVoX0BOVkZBISM9NyQkIiwmeTFCOVQhIzUkIjIuU100cVp2OiMhIz43JCQiKydIbkg4JSEiKiQiMWRjIyoqSCcqZjMjISM9NyQkIjEsKytKMFdxVCEjOiQiMVF5czNWcVM+ISM9NyQkIittUCJ6PyUhIiokIitOJUgoPT0hIzc3JCQiLE4qZUtVVSEjNSQiMllJcSpbTCtiOyEjPjckJCIrQCFRbkYlISIqJCIyJz4oUms1bVheIiEjPjckJCItdiUzV1JIJSEjNiQiMl8mUkQlZnZOVyIhIz43JCQiMiUqKioqXFssOjZWISM7JCIyJEdEZm5UVHQ4ISM+NyQkIi52Lj1gKD5WISM3JCIyVz05J1tkaFA4ISM+NyQkIi1EN2lOR1YhIzYkIjIqPm5zPUZMLTghIz43JCQiL3Y9R3hsS1YhIzgkIjIpW2k3YTJ2JEciISM+NyQkIi5EVENmcEwlISM3JCIxPEB3dCI+aUUiISM9NyQkIi9EMWcyRVRWISM4JCIxdiUqKnpFPiVbNyEjPTckJSp1bmRlZmluZWRHJSp1bmRlZmluZWRHNyQkIjIwXWk/Ly0tTiUhIzskIjF1dzZybTY2NyEjPTckJCIuRCIzPSVbTiUhIzckIjJaMCp6JVwnWyE+IiEjPjckJCIvdj11OltmViEjOCQiMiQpUl5SR3Y3PCIhIz43JCQiLURTODdrViEjNiQiMHBlJypSKkhfNiEjPDckJCIudkIoM1N0ViEjNyQiMiQpeUJvTUFENiIhIz43JCQiLFhTIW8jUSUhIzUkIjEqXFYiMzp3dDUhIz03JCQiLXZvJVI3UyUhIzYkIjFQJXo8LyQzXioqISM+NyQkIitMJil6PlchIiokIjE5cTIrPldrIiohIz43JCQiMSoqKipcaG0icFglISM6JCIxPDlzJVFlKnl2ISM+NyQkIip6TVNcJSEiKSQiKm0pUltnISM3NyQkIjIwKyt2Ulg2ZCUhIzskIjI5JWZ1Rk0ieW0jISM/NyQkIiswZ0RbWSEiKiQhKyRwWWBWJyEjOTckJCIrRGddI3klISIqJCEqKUdPV2ohIzc3JCQiK3ZHK2JbISIqJCExQE5FZ0hxNSQqISM+NyQkIitEKCpcRlwhIiokISooR1dANyEjNjckJCIrJip5JVwnXCEiKiQhMihbJm8hRyk9a08iISM+NyQkIjEqKioqKlwxJ1ItXSEjOiQhMm95ZCUpKVIkKjM6ISM+NyQkIio6PzYtJiEiKSQhMjMpZXU/MCQqeTohIz43JCQiMiYqKioqKlxCVylSXSEjOyQhMTNiIT4iRyp6ayIhIz03JCQiLHZGMSNcXSEjNSQhMmAxSk87ZkFvIiEjPjckJCIxKioqKioqPiRvJmVdISM6JCEyMSgqWyNlSz47PCEjPjckJCItRFQkXEsxJiEjNiQhMi9cX3EnSDZMPCEjPjckJCIxKioqKlxpLiR6MSYhIzokITJjITM7dGYlKlw8ISM+NyQkIjEqKipcUFE2RTImISM6JCExW1spUjpybXciISM9NyQlKnVuZGVmaW5lZEclKnVuZGVmaW5lZEc3JCQiMjArdnk9bSNHXyEjOyQhMTArKltZKUcnRyMhIz03JCQiLXZjcXBLXyEjNiQhMmVTW2EzZCoqSCMhIz43JCQiLkRjI3o3UF8hIzckITJ4NCQqeVNYTUojISM+NyQkIjImKioqKlwlemU6QyYhIzskITI7a2l6PCkpb0sjISM+NyQkIi1ESzBVXV8hIzYkITFrRFRpdm5gQiEjPTckJCIqRiNHZl8hIikkITFgI3AnRyJIK1EjISM9NyQkIixidTBxRiYhIzUkITAzIjQ4QS9LQyEjPDckJCIrQCNIWkgmISIqJCEyVms1KmVicSNbIyEjPjckJCIrc2g8SWAhIiokITE5NnRXKVwwZSMhIz03JCQiK0JKaWxgISIqJCErOE5udUUhIzc3JCQiMSwrKzkoUVZXJiEjOiQhMWx4QCV5PyNmRyEjPTckJCIyMCsrXUlhSV8mISM7JCEqdjNrLCQhIzY3JCQiK0NLXmtjISIqJCErVSlwLUEkISM3NyQkIis6M2I6ZSEiKiQhK2QkcEBKJCEjNzckJCIsdjEjKVIpZSEjNSQhMihmaVI+X1UzTCEjPjckJCIqSzhDJmYhIikkIStwbSx1SyEjNzckJCIxKioqKipwLj8pKilmISM6JCEyOEEtKHpsRFVLISM+NyQkIithbkFGZyEiKiQhMjluVkgpZXQrSyEjPjckJCIxLCtdNywkZi8nISM6JCEya3g0PD5RajwkISM+NyQkIjIwKys1WkxZMSchIzskITEzODh2K1tcSiEjPTckJCItRF1eKVIyJyEjNiQhMVFAU3khPV44JCEjPTckJCIsJkhvTCQzJyEjNSQhMiRHP19CPzk/SiEjPjckJCIuRCJwRSwpMychIzckITJ4R1ByXj9DNiQhIz43JCQiLXYzJilvIzQnISM2JCEyOClvNEdzYC9KISM+NyQkIjEsXVBbVk8oNCchIzokITJPME8iKm8rbDQkISM+NyQlKnVuZGVmaW5lZEclKnVuZGVmaW5lZEc3JCQiMEQxOUVFdUMnISM5JCEyaiFIMCNSbUx2IyEjPjckJCIvRCI9NkQ/RCchIzgkITIjeSQqKlwuKD1TRiEjPjckJCIwdj1BJ1JpY2khIzkkITI6PXdyUllvcyMhIz43JCQiLkRFIkdBaGkhIzckITIkSEhsKEdWTHIjISM+NyQkIi92VjgwVXFpISM4JCExRyJwdEFeZW8jISM9NyQkIi1EOSM9J3ppISM2JCExOydHXWozeGwjISM9NyQkIi52ZWg4ISlIJyEjNyQhMUFgTGxQWSpmIyEjPTckJCIsdiw0a0onISM1JCEyMmtBVV0jZlFEISM+NyQkIi12PykqPmBqISM2JCEyQyo0XUtjISozQyEjPjckJCIxKioqKipSaSEqKipRJyEjOiQhK25AeW9BISM3NyQkIjImKioqKipSNEk+WSchIzskITFzXVR2UGxpPiEjPTckJCIrayZwUWAnISIqJCErJDREW2giISM3NyQkIi1EVmxfcmwhIzYkITF1ZjUjKlxBOjkhIz03JCQiMiYqKioqXEFOPTRtISM7JCEyaylcMlRLKVI/IiEjPjckJCIuREAsNyFHbSEjNyQhMj0iZlFrVSdRNCIhIz43JCQiMSoqKlw8XVNvaychIzokITEmUjBeVWBzISkqISM+NyQkIjImKlxpbHVhaWwnISM7JCEwVmEtcVctQiohIz03JCQiMSoqXFAiKipvY20nISM6JCExdjgjNCFmZVgnKSEjPjckJCIyJls3eThoUHFtISM7JCExUjNsb29RXSQpISM+NyQkIjEqXCg9T0szdm0hIzokITE7KipHI3kzTDApISM+NyQkIjFcUGZlLnp6bSEjOiQhMS5FQC1tUWF4ISM+NyQlKnVuZGVmaW5lZEclKnVuZGVmaW5lZEc3JCQiMEQiRyoqNC4qbychIzkkITEjMzotMnE9OyghIz43JCQiL0RjPFhjJHAnISM4JCEwYkJ4aHMlb28hIz03JCQiMVxQJWUuKTQpcCchIzokITE3RmBgKXBMZCchIz43JCQiMiUqKlw3YTpqLW4hIzskITEjNEQzblprRichIz43JCQiMSpcKG8hZilwNm4hIzokITEmW1xROVZzbiYhIz43JCQiLURGY3c/biEjNiQhMWV0JEh6aDQyJiEjPjckJCIudi5xKiopUW4hIzckITJsIW9kNCVSbyRRISM/NyQkIixOeExxdichIzUkITIlW200Iz00VGQjISM/NyQkIi12Pj5JJHonISM2JCIyRmYtJjRuJTN5JCEjQTckJCIrbStkSG8hIiokIisiWyEpb3cjISM4NyQkIi1EJVtmbSdvISM2JCIxYDs7ZFY8d2MhIz43JCQiLEQhKltQIXAhIzUkIjF3L3VqWmk0KCkhIz43JCQiLkQ7aCRIQXAhIzckIjFpVnBPWkZGNSEjPTckJCItdj8kUTMlcCEjNiQiMChcV0dPcCc9IiEjPDckJCIvREp2MTZdcCEjOCQiMilbQCcpeihvdkUiISM+NyQkIi52KUhJUWZwISM3JCIySipcaSJbQyNcOCEjPjckJCIwRGNyPz5TJ3AhIzkkIjFsaSdSPFwuUiIhIz03JCQiMjBdUFdRYidvcCEjOyQiMnpHeS5qajtWIiEjPjckJCIwdj08YyJIdHAhIzkkIjI8Q2ohSGY8dDkhIz43JCUqdW5kZWZpbmVkRyUqdW5kZWZpbmVkRzckJCIudmpfREQpcCEjNyQiMiRRSiRSV1ZrYiIhIz43JCQiMSwrdjhMNygpcCEjOiQiMkU7JCoqeiIqPSlmIiEjPjckJCIuRDY1QDwqcCEjNyQiMlspKlJXQ1IsayIhIz43JCQiLCYpKSk9aipwISM1JCIya3NTTDh1QW8iISM+NyQkIi1EaldeMHEhIzYkIjJLazc+UkJydyIhIz43JCQiMjArKyFRK3I5cSEjOyQiMnViPyoqNF5GJj0hIz43JCQiLHY9LEouKCEjNSQiMjw3V1BrSGotIyEjPjckJCIrUEJcXnEhIiokIjFkKzgkb0NJPyMhIz03JCQiMiYqKioqKmZqdSMpMyghIzskIjFwMk1gUnpsRCEjPTckJCIrTnAwRHIhIiokIisjPV42JUghIzc3JCQiLDA7YkU+KCEjNSQiMjlIOFUhUiNSbSQhIz43JCQiMjArK2dRYC1FKCEjOyQiKk01KkhXISM2NyQkIit2UD86dSEiKiQiK1h1JDNOJyEjNzckJCIrXkt6YHYhIiokIisoejl3RSkhIzc3JCQiMjArKyFRJmU6cSghIzskIit2Y0dfNSEjNjckJCIrcygpKUgleSEiKiQiKix3ISpHIiEjNTckJCIrcilHKyspISIqJCIreWpsdzohIzY3JCQiK2VTLE8iKSEiKiQiKyI+SXMlPSEjNjckJCIraCVlLkgpISIqJCIqIkdLekAhIzU3JCQiMS0rK0htLUolKSEjOiQiK0tiKWVdIyEjNjckJCIrKVwmKltlKSEiKiQiKyMqMzUhKkchIzY3JCQiMSwrKzUkZXdyKSEjOiQiKk9qXUMkISM1NyQkIitiJ2YpbykpISIqJCIreStzd08hIzY3JCQiKnA3XCwqISIpJCIqVz1CNyUhIzU3JCQiKzguKDM7KiEiKiQiKi94bWYlISM1NyQkIiskKTRIMSQqISIqJCIrWm8vKjQmISM2NyQkIitBWipmVyohIiokIjInKioqKipmKEdPNWMhIz03JCQiK2oiPXFmKiEiKiQiK1YiPmE+JyEjNjckJCIrYFcmNHUqISIqJCIrQChRWnknISM2NyQkIitAMVcjKikqISIqJCIxLCsrSEtuUXUhIzw3JCQiKzNzJkgrIiEiKSQiMSoqKioqUkw+LzEpISM8NyQkIistRzY9NSEiKSQiK01PNSF5KSEjNjckJCIrPiNIRS4iISIpJCIrd3lxKyYqISM2NyQkIisvLjZaNSEiKSQiK0phKVstIiEjNTckJCIrX2VCaTUhIikkIitZUyhmNSIhIzU3JCQiK05xO3c1ISIpJCIrLjA2JD0iISM1NyQkIityV1YhNCIhIikkIispMyRHazchIzU3JCQiKzt1PTE2ISIpJCIrQUczYzghIzU3JCQiKz0vWD82ISIpJCIreillMlciISM1NyQkIis0cS5ONiEiKSQiK25uVEc6ISM1NyQkIismPnIpXDYhIikkIisxbjY9OyEjNTckJCIpbl1qNiEiJyQiK3BvXys8ISM1NyQkIisxPC95NiEiKSQiKyVlNHh5IiEjNTckJCIrcmdZIz4iISIpJCIrJXlxRyg9ISM1NyQkIitlYyp5PyIhIikkIis6J0g7Jz4hIzU3JCQiKypmNjpBIiEiKSQiK3QpKj5QPyEjNTckJCIqZEBzQiIhIigkIiooKlItNyMhIio3JCQiKzInKVJeNyEiKSQiK0NkWyE+IyEjNTckJCIrV2dVbDchIikkIitOIm9aRCMhIzU3JCQiK1grXiFHIiEiKSQiK0dnOzxCISM1NyQkIitrXWwmSCIhIikkIittWiI9UCMhIzU3JCQiKyp5TSU0OCEiKSQiKyZHSFBUIyEjNTckJCIrWCNvU0siISIpJCIraltEXEMhIzU3JCQiK28hXCRROCEiKSQiKnZAVVojISIqNyQkIipqSFFOIiEiKCQiK0ooPScqWyMhIzU3JCQiK0BZQW44ISIpJCIrVj9fI1wjISM1NyQkIithIzRFUSIhIikkIitCX0ckWyMhIzU3JCQiKz47MihSIiEiKSQiK0YzJD1ZIyEjNTckJCIrJEglUjY5ISIpJCIpIiopelUjISIpNyQkIipPR2RVIiEiKCQiK1o+SSJRIyEjNTckJCIrLSNbLlciISIpJCIrKjNCLksjISM1NyQkIisqKVwlZVgiISIpJCIrVDwlNEMjISM1NyQkIitEUzBxOSEiKSQiK0QlZVw6IyEjNTckJCIrbywzJVsiISIpJCIrZXEnejAjISM1NyQkIismKVEyKlwiISIpJCIrOF1VVD4hIzU3JCQiK2hcLjk6ISIpJCIraSVIRCI9ISM1NyQkIis7TVlGOiEiKSQiK0ZgeSdvIiEjNTckJCIrKlFxTGEiISIpJCIraClRbF8iISM1NyQkIisxMW9jOiEiKSQiKmwhKVJRIiEiKjckJCIrKlJbQWQiISIpJCIrPC51MzchIzU3JCQiK15qNShlIiEiKSQiK3JsTU01ISM1NyQkIitLRlArOyEiKSQiKlhcKlIoKSEjNTckJCIra0BIOjshIikkIip2IkcqKm8hIzU3JCQiKyRcNS5qIiEiKSQiKyo9ckwtJiEjNjckJCIrVHVEWDshIikkIitlPWZeSiEjNjckJCIrdl42ZjshIikkIitlXjxHOSEjNjckJCIrZVNZdDshIikkISgteUYkISIqNyQkIisicC4kKW8iISIpJCErWSk9ZDQjISM2NyQkIitOZDQuPCEiKSQhK2RZWCJ6JCEjNjckJCIrcDZKPTwhIikkIStXWSR6VyYhIzY3JCQiK0tIcko8ISIpJCErV00hKT1vISM2NyQkIitXLCFvdSIhIikkITEqKioqKipcLyV6QykhIzw3JCQiKy8kXD53IiEiKSQhKzkpSGlhKiEjNjckJCIrRSRbbHgiISIpJCErbG5XbDUhIzU3JCQiK1FjISkqeSIhIikkIStmNilIOiIhIzU3JCQiK2wpcGIhPSEiKSQhK3JFIylSNyEjNTckJCIrSlUjKj09ISIpJCErLnQwKUgiISM1NyQkIitPJmVXJD0hIikkISsvKilcWjghIzU3JCQiK0QhNCNbPSEiKSQhKz15XnU4ISM1NyQkIislXCZIaj0hIikkIStaeCNmUSIhIzU3JCQiK3o4bXg9ISIpJCEqeFUiejghIio3JCQiK3QxbCMqPSEiKSQhKyNSSlNOIiEjNTckJCIrQ2JUMT4hIikkISt6YEI6OCEjNTckJCIrdkZFQD4hIikkISsoZlBzRCIhIzU3JCQiKygqW29PPiEiKSQhKzFwSCE9IiEjNTckJCIrKiopNCwmPiEiKSQhKyh6MjA1IiEjNTckJCIrcCM0WSc+ISIpJCErRHg9LTUhIzU3JCQiK1AmKWV6PiEiKSQhKydbQSkpKSkpISM2NyQkIitIR0MlKj4hIikkIStsRncibyghIzY3JCQiKzQ7VTM/ISIpJCErXmYielYnISM2NyQkIitGWjtDPyEiKSQhKmMnPiEqXCEjNTckJCIrPTFKUT8hIikkISsoNCZ5W08hIzY3JCQiK3lWVGA/ISIpJCErN3M5Jj4jISM2NyQkIitIMTVuPyEiKSQhK1IrbW8oKSEjNzckJCIrOkwxIzMjISIpJCIrIm8oKm9YJiEjNzckJCIrUT85JzQjISIpJCIqVilIWz0hIzU3JCQiK2YkZTM2IyEiKSQiK2RsOmFKISM2NyQkIitgaUNEQCEiKSQiKywza2VWISM2NyQkIitYITQuOSMhIikkIit1Iyp6RGIhIzY3JCQiKy1qIls6IyEiKSQiK28yK1dsISM2NyQkIioyXydwQCEiKCQiKy5eJ1JZKCEjNjckJCIqKlxPJT0jISIoJCIrOiJITUMpISM2NyQkIitOWSl5PiMhIikkIis7d29NKSkhIzY3JCQiK3QnekxAIyEiKSQiK1I8WGQkKiEjNjckJCIrQSdRc0EjISIpJCIrOjk6IW8qISM2NyQkIiteXixVQSEiKSQiKz0pKXlxKSohIzY3JCQiK3UiZWhEIyEiKSQiKygpUWQvKiohIzY3JCQiKyU9aT1GIyEiKSQiK1dfKlF4KiEjNjckJCIrLTJZJkcjISIpJCIrb3hwQCYqISM2NyQkIitWXiozSSMhIikkIitSPTInMyohIzY3JCQiK2Y+J1xKIyEiKSQiMSoqKioqcEJyKmUmKSEjPDckJCIrWSlbLkwjISIpJCIrOVIqPSZ5ISM2NyQkIitHXmlWQiEiKSQiKyRbIipIOSghIzY3JCQiK2hfdWVCISIpJCIrcFA8UWkhIzY3JCQiK2wwTnRCISIpJCIrbCIqKjNHJiEjNjckJCIrRmolelEjISIpJCIrTiFvIWZVISM2NyQkIismUilbLUMhIikkIitYJHpLPiQhIzY3JCQiK3AoZWtUIyEiKSQiKyhHbTM5IyEjNjckJCIrNzZjSkMhIikkIis4KilHLSoqISM3NyQkIitVWiZmVyMhIikkIStDcE82NSEjNzckJCIrZUw1aEMhIikkIStKJltfQSIhIzY3JCQiKzBsIltaIyEiKSQhK25lWzBBISM2NyQkIisoNHMqKlsjISIpJCErPCV5MkIkISM2NyQkIis6JilbL0QhIikkISsxbGBTVCEjNjckJCIpJ3AqPUQhIickISopKTRSJ1whIzU3JCQiK1xeNE1EISIpJCErOD9EQGQhIzY3JCQiK0tqLVtEISIpJCErZHE1O2ohIzY3JCQiK29QSGlEISIpJCErc2REOm8hIzY3JCQiKzduL3lEISIpJCErW190SHMhIzY3JCQiKzkoNEJmIyEiKSQhK2gpR29aKCEjNjckJCIrMWoqb2cjISIpJCEraGVHLHchIzY3JCQiKyNcSTxpIyEiKSQhK3pCJVtmKCEjNjckJCIrJypmT05FISIpJCExKioqKioqPW1cc3UhIzw3JCQiKy41ISpcRSEiKSQhK3ArQkJzISM2NyQkIituYEtrRSEiKSQhK05BXGdvISM2NyQkIithXHZ6RSEiKSQhKixwU04nISM1NyQkIismKjNQJHAjISIpJCErUl5eOWUhIzY3JCQiK20zMzRGISIpJCErZih5bDQmISM2NyQkIisuekRCRiEiKSQhK1pEXXRWISM2NyQkIipNJkdQRiEiKCQhKm0lcCtPISM1NyQkIitVJHBCdiMhIikkIStQdyc0cyMhIzY3JCQiKk85dncjISIoJCErdiIqXC49ISM2NyQkIisnMyVIInkjISIpJCErKFtHbmAqISM3NyQkIitVdiNmeiMhIikkISsmSE9BMiYhIzg3JCQiK2skMy0iRyEiKSQiKyg0Skc7KSEjNzckJCIrRiopb0RHISIpJCIrOHV6QjwhIzY3JCQiKzxSM1JHISIpJCIrUS8ycEMhIzY3JCQiK14mb1cmRyEiKSQiK2RoP2xLISM2NyQkIis6NCQqb0chIikkIitNQDBWUiEjNjckJCIrKmVgSylHISIpJCIrb1RNT1ghIzY3JCQiK2R3ZSgqRyEiKSQiK0UyYFZdISM2NyQkIispXDJBIkghIikkIitaYDNrYSEjNjckJCIrJkcveCNIISIpJCIrbllwJ3omISM2NyQkIitBTCI+JUghIikkIit5KVJgKmYhIzY3JCQiK2wlUmYmSCEiKSQiKyZ6eigqMychIzY3JCQiKyM9TDQoSCEiKSQiMjArKyEpUnUqeWchIz03JCQiK2RVKmUpSCEiKSQiMicqKioqKmYmUS1iZiEjPTckJCIkKyQhIiIkIitkTT9RZCEjNi0lJkNPTE9SRzYnJSRSR0JHJCIpQyllcSUhIikkIiIhISIiJCIoJz4hXCYhIiktJStfQVRUUklCVVRFRzYjLyUnc291cmNlRyUsbWF0aGRlZmF1bHRHLSUlVklFV0c2JDskIiM1ISIiJCIkKyQhIiIlKERFRkFVTFRHLSYlJl9BWElTRzYjIiIiNiYtJSZDT0xPUkc2JiUkUkdCRyQiIiEhIiIkIiIhISIiJCIiISEiIi0lKkxJTkVTVFlMRUc2IyIiIS0lKlRISUNLTkVTU0c2IyIiIS0lLVRSQU5TUEFSRU5DWUc2IyQiIiEhIiItJiUmX0FYSVNHNiMiIiM2Ji0lJkNPTE9SRzYmJSRSR0JHJCIiISEiIiQiIiEhIiIkIiIhISIiLSUqTElORVNUWUxFRzYjIiIhLSUqVEhJQ0tORVNTRzYjIiIhLSUtVFJBTlNQQVJFTkNZRzYjJCIiISEiIi0lK0FYRVNMQUJFTFNHNiQtSSNtaUc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkc2IjY2USJ5NiIvJSdmYW1pbHlHUSE2Ii8lJXNpemVHUSMxMDYiLyUlYm9sZEdRJmZhbHNlNiIvJSdpdGFsaWNHUSV0cnVlNiIvJSp1bmRlcmxpbmVHUSZmYWxzZTYiLyUuc3RyaWtldGhyb3VnaEdRJmZhbHNlNiIvJSpzdWJzY3JpcHRHUSZmYWxzZTYiLyUsc3VwZXJzY3JpcHRHUSZmYWxzZTYiLyUrZm9yZWdyb3VuZEdRKFswLDAsMF02Ii8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdNiIvJSdvcGFxdWVHUSZmYWxzZTYiLyUrZXhlY3V0YWJsZUdRJmZhbHNlNiIvJSlyZWFkb25seUdRJmZhbHNlNiIvJSljb21wb3NlZEdRJmZhbHNlNiIvJSpjb252ZXJ0ZWRHUSZmYWxzZTYiLyUraW1zZWxlY3RlZEdRJmZhbHNlNiIvJSxwbGFjZWhvbGRlckdRJmZhbHNlNiIvJTZzZWxlY3Rpb24tcGxhY2Vob2xkZXJHUSZmYWxzZTYiLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWM2IlEhNiItJSlfVklTSUJMRUc2IyIiIi0lJVJPT1RHNictJSlCT1VORFNfWEc2IyQiIiEhIiItJSlCT1VORFNfWUc2IyQiIiEhIiItJS1CT1VORFNfV0lEVEhHNiMkIiUrXSEiIi0lLkJPVU5EU19IRUlHSFRHNiMkIiUrXSEiIi0lKUNISUxEUkVORzYiLSUrQU5OT1RBVElPTkc2Jy0lKUJPVU5EU19YRzYjJCIiISEiIi0lKUJPVU5EU19ZRzYjJCIiISEiIi0lLUJPVU5EU19XSURUSEc2IyQiJStdISIiLSUuQk9VTkRTX0hFSUdIVEc2IyQiJStdISIiLSUpQ0hJTERSRU5HNiI=NiI= + + + LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkjbW9HRiQ2LVEifkYnLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGNC8lKXN0cmV0Y2h5R0Y0LyUqc3ltbWV0cmljR0Y0LyUobGFyZ2VvcEdGNC8lLm1vdmFibGVsaW1pdHNHRjQvJSdhY2NlbnRHRjQvJSdsc3BhY2VHUSYwLjBlbUYnLyUncnNwYWNlR0ZDLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRicvJSVzaXplR1EjMTJGJy8lK2V4ZWN1dGFibGVHRjRGLw== diff --git a/src/test/java/arb/expressions/ExpressionTest.java b/src/test/java/arb/expressions/ExpressionTest.java index c688f4388..c11e79fad 100644 --- a/src/test/java/arb/expressions/ExpressionTest.java +++ b/src/test/java/arb/expressions/ExpressionTest.java @@ -29,6 +29,14 @@ public class ExpressionTest extends TestCase { + public static void testSimplificationOneTimesZero() + { + var f = RealNullaryFunction.parse("1*0"); + f.simplify(); + assertEquals(0.0, f.instantiate().evaluate(128).doubleValue()); + assertEquals("0", f.toString()); + } + public static void testSimplificationAConstantTimesOneIsTheConstant() { var f = RealNullaryFunction.parse("5*1"); @@ -95,7 +103,6 @@ public void testFourierTransformOfType1ChebyshevPolynomials() assertEquals("-0.2897102277656836133548571248961385757265", eval.re().doubleValue()); assertTrue(eval.im().isZero()); - assert false : "Wtf"; } public void testDerivative() diff --git a/src/test/java/arb/expressions/nodes/DerivativeNodeTest.java b/src/test/java/arb/expressions/nodes/DerivativeNodeTest.java new file mode 100644 index 000000000..d06a28b63 --- /dev/null +++ b/src/test/java/arb/expressions/nodes/DerivativeNodeTest.java @@ -0,0 +1,31 @@ +package arb.expressions.nodes; + +import arb.Real; +import arb.documentation.BusinessSourceLicenseVersionOnePointOne; +import arb.documentation.TheArb4jLibrary; +import arb.expressions.Context; +import arb.functions.real.RealFunction; +import junit.framework.TestCase; + +/** + * + * @see BusinessSourceLicenseVersionOnePointOne © terms of the + * {@link TheArb4jLibrary} + */ +public class DerivativeNodeTest extends + TestCase +{ + public void testRealFunctionDerivative() + { + var context = new Context(Real.named("a").set(2), + Real.named("b").set(4), + Real.named("c").set(6)); + var f = RealFunction.parse("x->a*x+b*x²+c*x³", context); + var derivative = f.rootNode.differentiate(f.independentVariable).simplify(); + f.rootNode = derivative; + f.expression = derivative.toString(); + var func = f.instantiate(); + double val = func.eval(2.3); + assertEquals(115.61999999999998, val); + } +}