a
XC?h_ � @ st d dl mZ d dlZd dlZd dlZd dlZd dlZdgZejj Z
ejjZe�
dejejB �ZG dd� dej�ZdS )� ��DecimalN�FractionaC
\A\s* # optional whitespace at the start, then
(?P[-+]?) # an optional sign, then
(?=\d|\.\d) # lookahead for digit or .digit
(?P\d*) # numerator (possibly empty)
(?: # followed by
(?:/(?P\d+))? # an optional denominator
| # or
(?:\.(?P\d*))? # an optional fractional part
(?:E(?P[-+]?\d+))? # and optional exponent
)
\s*\Z # and optional whitespace to finish
c s� e Zd ZdZdQdd�� fdd�Zedd � �Zed
d� �Zdd
� ZdRdd�Z e
dd� �Ze
dd� �Zdd� Z
dd� Zdd� Zdd� Zeeej�\ZZdd� Zeeej�\ZZdd � Zeeej�\ZZd!d"� Zeeej�\ZZ d#d$� Z!ee!ej"�\Z#Z$d%d&� Z%ee%e&�\Z'Z(d'd(� Z)ee)ej*�\Z+Z,d)d*� Z-d+d,� Z.d-d.� Z/d/d0� Z0d1d2� Z1d3d4� Z2d5d6� Z3d7d8� Z4dSd9d:�Z5d;d<� Z6d=d>� Z7d?d@� Z8dAdB� Z9dCdD� Z:dEdF� Z;dGdH� Z