func: function approveOrder(Order memory order, bool orderbookInclusionDesired)
          internal
      {
          
  
          
          require(msg.sender == order.maker);
  
          
          bytes32 hash = hashToSign(order);
  
          
          require(!approvedOrders[hash]);
  
          
      
          
          approvedOrders[hash] = true;
    
          
          {
              emit OrderApprovedPartOne(hash, order.exchange, order.maker, order.taker, order.makerRelayerFee, order.takerRelayerFee, order.makerProtocolFee, order.takerProtocolFee, order.feeRecipient, order.feeMethod, order.side, order.saleKind, order.target);
          }
          {   
              emit OrderApprovedPartTwo(hash, order.howToCall, order.calldata, order.replacementPattern, order.staticTarget, order.staticExtradata, order.paymentToken, order.basePrice, order.extra, order.listingTime, order.expirationTime, order.salt, orderbookInclusionDesired);
          }
      }